#ifndef _OC_VOLUME_SWAN_H__
#define _OC_VOLUME_SWAN_H__

#include "VolumeObject.h"

namespace OCPP
{
    namespace Volume
    {
		struct swanheader
		{
			char ZonName[12];
			char DataName[38];
			char	Flag[8];
			char	Version[8];
			unsigned short int year;//2008 两个字节
			unsigned short int month;//05  两个字节
			unsigned short int day;//19    两个字节
			unsigned short int hour;//14   两个字节
			unsigned short int minute;//31 两个字节
			unsigned short int interval;  //两个字节        
			unsigned short int XNumGrids;//1300 两个字节
			unsigned short int YNumGrids;//800 两个字节
			unsigned short int ZNumGrids;//20  两个字节
			int RadarCount; //拼图雷达数 四个字节
			float StartLon; //网格开始经度（左上角） 四个字节
			float StartLat; //网格开始纬度（左上角） 四个字节
			float CenterLon;//网格中心经度 四个字节
			float CenterLat;//网格中心纬度 四个字节
			float XReso;	//经度方向分辨率 四个字节
			float YReso;	//纬度方向分辨率 四个字节
			float ZhighGrids[40];//垂直方向的高度（单位km）数目根据ZnumGrids而得（最大40层） 160个字节。
			char RadarStationName[20][16];    //雷达站点名称,	20*16字节
			float  RadarLongitude[20];      //雷达站点所在经度，单位：度， 4*20字节
			float  RadarLatitude[20];       //雷达站点所在纬度，单位：度， 4*20字节
			float  RadarAltitude[20];      //雷达所在海拔高度，单位：米， 4*20字节
			unsigned char    MosaicFlag[20];    //该雷达数据是否包含在本次拼图中，未包含:0，包含:1, 20字节
			char	Reserved[172];			//备用
		};

        class _volumeExport CSwan : public CVolumeObject
        {
        public:
			bool convert(String fileName);
			bool convert(std::istream& sstream);
			bool extract(String fileName,const VolumeOptions& options);
        private:
            bool readHeader(std::istream& sstream);
            int                 mImageS;
            int                 mImageT;
            int                 mImageR;
            swanheader          header;
            std::vector<uint8>  mBuffer;
        };
    }
}

#endif // !_OC_VOLUME_SWAN_H__




